# # coding: utf-8
# import scipy.stats
# Q1=scipy.stats.norm(0,1).ppf(0.25)
# Q3=scipy.stats.norm(0,1).ppf(0.75)
# Upper_fence=scipy.stats.norm(0,1).cdf(Q3+1.5*(Q3-Q1))
# Lower_fence=scipy.stats.norm(0,1).cdf(Q1-1.5*(Q3-Q1))
# prob_UL=round(Upper_fence-Lower_fence,4)
# prob_Outliers=1-prob_UL
# print (u'Q1-μ=%.4fσ,Q3-μ=%.4fσ'%(Q1,Q3))
# print (u'IQR=Q3-Q1=%.4fσ'%(Q3-Q1))
# print (u'Q3+1.5×IQR-μ=%.4fσ'%(Q3+1.5*(Q3-Q1)))
# print (u'Q1-1.5×IQR-μ=%.4fσ'%(Q1-1.5*(Q3-Q1)))
# print (u'P(Q1-1.5×IQR<x<Q3+1.5×IQR)=%.4f'%(prob_UL))
# print (u'在上下限之外的概率=%.4f%%'%(100*prob_Outliers))
# coding: utf-8
import scipy.stats       # SciPy库的一部分，提供了许多统计相关的函数和类
Q1 = scipy.stats.norm(0,1).ppf(0.25)    # .ppf(q) 方法返回给定累积分布函数（CDF）值 q 对应的分位数。
Q3 = scipy.stats.norm(0,1).ppf(0.75)
Upperfence = scipy.stats.norm(0,1).cdf(Q3+1.5*(Q3-Q1))  # .cdf(x) 方法返回随机变量小于或等于 x 的概率。因此，Upperfence 和 Lowerfence 分别表示正态分布中小于或等于上界和下界的概率。
Lowerfence = scipy.stats.norm(0,1).cdf(Q1-1.5*(Q3-Q1))
probUL = round(Upperfence-Lowerfence,4)       # 计算了上界和下界之间区域的概率，并四舍五入到小数点后四位。这个概率表示了数据中“正常”值（非异常值）的比例。
probOutliers = 1-probUL
print(u'Q1-μ=%.4fσ,Q3-μ=%.4fσ'%(Q1,Q3))
print(u'IQR=Q3-Q1=%.4fσ'%(Q3-Q1))
print(u'Q3+1.5×IQR-μ=%.4fσ'%(Q3+1.5*(Q3-Q1)))
print(u'Q1-1.5×IQR-μ=%.4fσ'%(Q1-1.5*(Q3-Q1)))
print(u'P(Q1-1.5×IQR<x<Q3+1.5×IQR)=%.4f'%(probUL))
print(u'在上下限之外的概率=%.4f%%'%(100*probOutliers))
# print(scipy.stats.norm(0,1).cdf(0.22))